/*
   mersenneTwister.cpp:

   A C++ object implementing portions of the C-program MT19937 by
   Takuji Nishimura and Makoto Matsumoto. Available from
   http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html

   Adapted by Josh Lospinoso
*/

#ifndef MERSENNETWISTER_H_
#define MERSENNETWISTER_H_

/* Period parameters */
namespace csiena {

class MersenneTwister {
public:
	MersenneTwister(unsigned long s);
	MersenneTwister(void);
	void seed(unsigned long s);
	float next(void);
	unsigned long getSeed();
private:
	unsigned long mt[];
	int mti;
};

}
#endif /* MERSENNETWISTER_H_ */
